package com.raymond.cmpp.common.packet;



/**
 * 连接请求
 *
 * @author :  raymond
 * @version :  V1.0
 * @date :  2021-08-05 11:26
 */
public enum ConnectRequest {
    /** 源地址，此处为SP_Id，即SP的企业代码。 **/
	SOURCE_ADDR(6),
    /**
     * 用于鉴别源地址。其值通过单向MD5 hash计算得出，表示如下：
     * AuthenticatorSource =
     * MD5（Source_Addr+9 字节的0 +shared secret+timestamp）
     * Shared secret 由中国移动与源地址实体事先商定，timestamp格式为：MMDDHHMMSS，即月日时分秒，10位。
     */
    AUTHENTICATOR_SOURCE(16),
    /**
     * 双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号)，对于3.0的版本，高4bit为3，低4位为0
     */
    VERSION(1),
    /**
     * 时间戳的明文,由客户端产生,格式为MMDDHHMMSS，即月日时分秒，10位数字的整型，右对齐 。
     */
    TIMESTAMP(4);
    /**
     * 消息长度
     */
    private int length;
    /**
     * 报文总长度
     */
    private final static int BODY_LENGTH = SOURCE_ADDR.length + AUTHENTICATOR_SOURCE.length + VERSION.length + TIMESTAMP.length;
    
    ConnectRequest(int length) {
        this.length = length;
    }

    public int getLength() {
        return length;
    }
    public int getBodyLength() {
        return BODY_LENGTH;
    }
}
